package com.itheima.web.controller;

import cn.hutool.captcha.CaptchaUtil;
import cn.hutool.captcha.LineCaptcha;
import com.itheima.domain.db.Admin;
import com.itheima.domain.db.Result;
import com.itheima.domain.vo.PageBeanVo;
import com.itheima.web.manager.AdminManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;

@Controller
public class AdminController {
    @Autowired
    private AdminManager adminManager;
    /**
     * 生成验证码
     *   uuid 前端传入过来的一个唯一标识符, 每一个用户当前的操作
     */
    @GetMapping("/system/users/verification")
    @ResponseBody
    public void getCodeImg(String uuid , HttpServletResponse response) throws IOException {
        //通过糊涂工具包生成图片
        LineCaptcha lineCaptcha = adminManager.createImgCode(uuid);

        //设置格式 图片格式
        response.setContentType("image/jpeg"); //text/html

        //输出给浏览器
        lineCaptcha.write(response.getOutputStream()); //将图片输出字节流
    }


    /**
     * 登录
     */
    @PostMapping("/system/users/login")
    @ResponseBody
    public Map login(@RequestBody Map<String,String> map )  {

        String username = map.get("username");
        String password = map.get("password");
        String verificationCode = map.get("verificationCode");
        String uuid = map.get("uuid");
        return adminManager.login(username ,password , verificationCode , uuid  );
    }

    /**
     * 校验登录状态 返回基础信息(GET请求)
     */
    @GetMapping("/system/users/profile2")
    @ResponseBody
    public Map getProfile(@RequestHeader("Authorization") String token)  {
        //此处有坑  前端存储的token有固定格式的 前面都有 Bearer 空格
        //我们在使用token的时候 需要删除前端携带过来的前缀

        return adminManager.profile(  );
    }


    /**
     * 校验登录状态 返回基础信息
     */
    @PostMapping("/system/users/profile")
    @ResponseBody
    public Map profile(@RequestHeader("Authorization") String token)  {
        //此处有坑  前端存储的token有固定格式的 前面都有 Bearer 空格
        //我们在使用token的时候 需要删除前端携带过来的前缀

        return adminManager.profile(  );
    }
    /**
     * 登出 退出
     */
    @PostMapping("/system/users/logout")
    @ResponseBody
    public Map logout(@RequestHeader("Authorization") String token)  {
        return adminManager.logout( token.replace("Bearer ","") );
    }

    //通过微信code登录
    @GetMapping("/weixinlogin")
    public String  wxLogin(String code, HttpServletRequest request, HttpServletResponse response) throws InterruptedException, IOException, ServletException {
        return adminManager.wxLogin(code,request,response);
    }

}
